# 定义目标
# 目标名：前置依赖目标/依赖文件列表
# 命令1
# 命令2
# ....

# 定义变量
#objects := main.o hello.o
#objects := main.o
#objects += hello.o
objects := main.o \
			hello.o

# 声明伪目标 没有依赖文件，但会被其他目标依赖
.PHONY: clean

#目标名和目标文件名应该一致，否则将认为没有产生对应目标文件，而一直执行下去

main.o: main.c hello.h
	gcc -c main.c -o main.o

hello.o: hello.c hello.h
	gcc -c hello.c -o hello.o

clean:
	rm main $(objects)

# - 忽略错误
clean0:
	-rm main
	-rm main.o
	-rm hello.o

main: $(objects)
	gcc $(objects) -o main

#main: main.c hello.c hello.h
#	gcc -c main.c hello.c -o main
#	./main
#	rm main

#main: main.o hello.o
#	gcc main.o hello.o -o main
#	./main
#	rm main main.o hello.o

